package com.abel.bigwater.data.sanchuan

import com.abel.bigwater.data.Bit32Array

/**
 * ST1:
ST1.3~7: 信号强度 CSQ， 5bit (0-31) ST1＝0x10 表示信号强度是 2
ST1.2: 存储故障标志， 0-正常， 1-故障
ST1.1: 按键异常标志， 0-正常， 1-故障
ST1.0: 逆流标志， 0-正常， 1-逆流
ST2：
ST2.7: 阀门状态， 0-开阀， 1-关阀
ST2.6: 阀门异常， 0-阀门正常， 1-阀门异常
ST2.5: 流量通讯异常标志，
针对超声波表， 0-正常， 1-时间测量芯片通讯故障
针对带 TTL 光电模块的表， 0-正常， 1-光电模块通讯故障
ST2.4: 磁干扰标志， 0-正常， 1-磁干扰
ST2.3: 2 级低压标志， 0-正常， 1-2 级低压
ST2.2: 1 级低压标志， 0-正常， 1-1 级低压
ST2.1: 防拆标志， 0-正常， 1-表被拆开
ST2.0: 脉冲异常标志， 0-正常， 1-传感器脉冲异常
ST3：
ST3.5~7: 光电模块组合位 3~1，组合位 1、 2、 3 值依次为 1、 0、 0 时，则值为 4，其值与所表示的含义对应如下：
4 模块非关键错误
2 模块气泡干扰
6 模块致命故障
1 模块强光干扰
其它值为正常
ST3.4: 应急按键，默认值为 0，仅在此一种情况下该值为 1：当水表被上位机关阀 3 天之后，若阀仍然关闭，用户此时按键，则水表上线时，该值为 1
ST3.3: 高瞬时流速， 0-正常， 1-故障
ST4:
ST4.0~1: 上传的 ST 类型， 0 为 STA
ST4.3: 小无线通讯异常标志， 0-正常， 1-小无线通讯异常
 */
class GmStateType : Bit32Array {
    constructor(v1: Int) : super(v1) {

    }

    /**
     * ST1:
    ST1.3~7: 信号强度 CSQ， 5bit (0-31) ST1＝0x10 表示信号强度是 2
    ST1.2: 存储故障标志， 0-正常， 1-故障
    ST1.1: 按键异常标志， 0-正常， 1-故障
    ST1.0: 逆流标志， 0-正常， 1-逆流
    ST2
     */
    var revertFlag: Int
        get() = get(0)
        set(value) {
            set(0, value)
        }

    var keyExceptionFlag: Int
        get() = get(1)
        set(value) {
            set(1, value)
        }

    var storeErrorFlag: Int
        get() = get(2)
        set(value) {
            set(2, value)
        }

    var rssi: Int
        get() = get(3, 7)
        set(value) {
            set(3, 7, value)
        }

    /**
     * ST2：
    ST2.7: 阀门状态， 0-开阀， 1-关阀
    ST2.6: 阀门异常， 0-阀门正常， 1-阀门异常
    ST2.5: 流量通讯异常标志，
    针对超声波表， 0-正常， 1-时间测量芯片通讯故障
    针对带 TTL 光电模块的表， 0-正常， 1-光电模块通讯故障
    ST2.4: 磁干扰标志， 0-正常， 1-磁干扰
    ST2.3: 2 级低压标志， 0-正常， 1-2 级低压
    ST2.2: 1 级低压标志， 0-正常， 1-1 级低压
    ST2.1: 防拆标志， 0-正常， 1-表被拆开
    ST2.0: 脉冲异常标志， 0-正常， 1-传感器脉冲异常
     */
    var pulseExceptionFlag: Int
        get() = get(8)
        set(value) {
            set(8, value)
        }

    var avoidBrokenFlag: Int
        get() = get(9)
        set(value) {
            set(9, value)
        }

    var lowVoltLevelOne: Int
        get() = get(10)
        set(value) {
            set(10, value)
        }

    var lowVoltLevelTwo: Int
        get() = get(11)
        set(value) {
            set(11, value)
        }

    var magnetFlag: Int
        get() = get(12)
        set(value) {
            set(12, value)
        }

    var comFailFlag: Int
        get() = get(13)
        set(value) {
            set(13, value)
        }

    var valveFailFlag: Int
        get() = get(14)
        set(value) {
            set(14, value)
        }

    var valveStateFlag: Int
        get() = get(15)
        set(value) {
            set(15, value)
        }

    /**
     * ST3：
    ST3.5~7: 光电模块组合位 3~1，组合位 1、 2、 3 值依次为 1、 0、 0 时，则值为 4，其值与所表示的含义对应如下：
    4 模块非关键错误
    2 模块气泡干扰
    6 模块致命故障
    1 模块强光干扰
    其它值为正常
    ST3.4: 应急按键，默认值为 0，仅在此一种情况下该值为 1：当水表被上位机关阀 3 天之后，若阀仍然关闭，用户此时按键，则水表上线时，该值为 1
    ST3.3: 高瞬时流速， 0-正常， 1-故障
    ST4:
     */

    var highSpeedFlag: Int
        get() = get(19)
        set(value) {
            set(19, value)
        }

    var urgentFlag: Int
        get() = get(20)
        set(value) {
            set(20, value)
        }

    var optoElecModule: Int
        get() = get(21, 23)
        set(value) {
            set(21, 23, value)
        }

    /**
     * ST4:
    ST4.0~1: 上传的 ST 类型， 0 为 STA
    ST4.3: 小无线通讯异常标志， 0-正常， 1-小无线通讯异常
     */
    var stType: Int
        get() = get(24, 25)
        set(value) {
            set(24, 25, value)
        }

    var nearbyComFailFlag: Int
        get() = get(27)
        set(value) {
            set(27, value)
        }
}
